1
Kode sebagai Data: Sifat Homoikonik Elixir
AI019Lesson 10
00:00

Sifat Homoikonik

Bahasa homoikonik: Bahasa di mana representasi internal dinyatakan dalam bahasa itu sendiri. Dalam Elixir, kode sumber bukan sekadar teks; ia adalah struktur data bersarang yang dikenal sebagai Pohon Sintaks Abstrak (AST).

1. Aturan Logika Representasi

Elixir menyederhanakan AST dengan merepresentasikan literal dasar sebagai dirinya sendiri. Atom, angka, daftar (termasuk daftar kunci), biner, dan tuple dengan dua elemen direpresentasikan secara internal tanpa pembungkus kompleks.

iex> quote do: [do: 1]
[do: 1]
iex> quote do: "binaries"
"binaries"

2. Struktur Tuple AST

Sebagian besar transformasi kode menghasilkan tuple tiga elemen: {nama_fungsi, metadata, argumen}. Sebagai contoh, panggilan fungsi seperti 1 + 2 menjadi {:+, [line: 1], [1, 2]}. Ini memungkinkan bahasa untuk memperlakukan Kode sebagai Data.

3. Makro: Menunda Eksekusi

Makro adalah "cara menunda eksekusi klausa dengan menyisipkan kode kembali ke representasi internal program kita." Sementara fungsi standar mengevaluasi argumen sebelum memanggil, makro menerima AST mentah, memungkinkan penyisipan logika sebelum kompilasi.

$$\text{Kode Sumber} \xrightarrow{\text{Quote}} \text{Tupel AST} \xrightarrow{\text{Makro}} \text{AST yang Diubah}$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>